using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Web企业级开发
{
    /// <summary>
    /// 访问修饰符 class 类的名字
    /// </summary>
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        //把服务添加进容器
        public void ConfigureServices(IServiceCollection services)
        {
            //声明 引用哪些服务 

        }

        //2、定义一个函数，获取返回当前的时间，并且判断当前时间是上午/下午/晚上，
        //并且返回如例的字符串：“早上好，当前时间是2023年10月1日 15时23分”。
        public string GetTime()
        {
            //当前的时间，并且判断当前时间是上午/下午/晚上
            var dt = DateTime.Now;
            var time = "";
            if (dt.Hour < 12)
                time="早上";
            else if (dt.Hour > 12 && dt.Hour < 18)
                time="下午";
            else
                time="晚上";

            //并且返回如例的字符串：“”。
            return time+"好，当前时间是" + dt.ToString("yyyy年MM月dd日 HH时mm分");
        }

        //3、调用题2的函数，并且接收返回值，输出在页面
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        //配置请求规则（开发人员制定）
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            //      是否开发环境 如果是
            if (env.IsDevelopment())
            {
                //启用 异常信息页  系统安全
                app.UseDeveloperExceptionPage();
            }

            // 启用路由 程序员 配置规则
            app.UseRouting();

            //启用终结点
            app.UseEndpoints(endpoints =>
            {
                //访问地址 会出现什么内容
                endpoints.MapGet("/", async context =>
                {
                    context.Response.ContentType = "text/plain;charset=utf-8";
                    //1、定义一个变量赋值为自己的学号姓名，并在页面输出显示。
                    //学号  1406200115 int string
                    int num = 1406200115;
                    //姓名  刘达成
                    string name = "刘达成";

                    //2 
                    var time = GetTime();

                    //5.1以自己的信息为实例化的对象赋值
                    //   对象 ←实例化←     类
                    //对象是类的实例   类是对象的抽象
                    var student = new Student();

                    student.Name = "小刘";
                    student.StuNo = 1406200;

                    student.ClassName = "2022软件";
                    student.Birthday = new DateTime(2004, 1, 1);
                    student.Address = "广东肇庆";

                    //5.2 调用Say方法，或者自我介绍字符串，输出页面。
                    var info = student.Say();

                    //实例化 从类去创建对象
                    var student2 = new Student(1406201, "小达");

                    student2.ClassName = "2021软件";
                    student2.Birthday = new DateTime(2003, 1, 1);
                    student2.Address = "广东肇庆";

                    var student3 = new Student(1406202, "小城", "2020软件", new DateTime(2000, 1, 1), "广东广州");

                    var info2 = student2.Say();

                    //把文本写进响应里面
                    await context.Response.WriteAsync($"Hello World! 学号：{num}  姓名：{name}  {time} \n {info} \n{info2}");
                });
            });

            //  int num = int.Parse("1406200115");

            //  int stuAge = int.Parse(Console.ReadLine());
            // // double a = double.Parse("20.5");
            //  //学号 字符串
            //  string str1= num.ToString();
            ////  string str2 = a.ToString();

            //  var str3 = "字符串";

            //  ////var a = 1;

            //  ////var b = 2.1f;


            //  double a = 2.31;
            //  int b = 20;
            //  //            2,2.31
            //  int result = (int)a + b;
            //  var result1 = a + (double)b;


            //  var a3 = Convert.ToInt32("1000");
            //  var a4 = Convert.ToDouble(true);
            //  var a5 = Convert.ToInt16(true);

            //  //

            //  //指定年月日 2011年3月4号
            DateTime dt = new DateTime(2011, 3, 4);
            //指定年月日时分秒 2011年3月4号 17:08:09
            DateTime dt3 = new DateTime(2011, 3, 4, 17, 08, 09);

            //  //获取当前时间 系统
            //  DateTime dt1 = DateTime.Now;
            //  //获取当前日期
            //  DateTime dt2 = DateTime.Today;

            //dt = new DateTime(2019, 6, 25,11,15,16);
            //var s1 = dt.Date.ToString();//日期。2019-06-25 0:00:00
            //var s2 = dt.Year.ToString();//年。2019
            //var s3 = dt.Month.ToString();//月。6
            //var s4 = dt.Day.ToString();//日。 25
            //var s5 = dt.DayOfWeek.ToString();//星期。Tuesday
            //var s6 = Convert.ToInt32(dt.DayOfWeek).ToString(); //2
            //var s7 = dt.DayOfYear.ToString();// 该年中的第几天。176
            //var s8 = (dt.DayOfYear / 7 + 1).ToString();//该年中的第几周。26

            //  s1 = dt.TimeOfDay.ToString();//时间。10:50:23.4881958
            //  s2 = dt.Hour.ToString();//时，10
            //  s3 = dt.Minute.ToString();//分、50
            //  s4 = dt.Second.ToString();//秒 23
            //  s5 = dt.Millisecond.ToString();//毫秒。 488

            //  //早上 下午 晚上
            //  //dt.Hour <12  >12 <18  >18

            //  s1 = dt.ToString();//2019-06-25 10:38:31
            //  s2 = dt.ToString("d");//2019-06-25

            //  //自定义格式化时间 2019年06月25日 10点38分31秒
            //  s5 = dt.ToString("yyyy年MM月dd日 HH点mm分ss秒");//2019年06月25日 10点38分31秒
            //  //                2019/06/25 10:38
            //  s6 = dt.ToString("yyyy/MM/dd HH：mm");

            //  //函数名字()
            //  fun();

            //  var sum = add(1 , 2 );


            //类和对象
            //对象实例化  对象是类的实例  
            ClassB b = new ClassB();

            //对类实例化  类
            var cat1 = new Cat();
            cat1.Date = new DateTime(2019, 11, 08);
            cat1.Name = "小花";
            cat1.Type = "橘猫";
            cat1.Say();

            var cat2 = new Cat();
            cat2.Date = new DateTime(2018, 11, 08);
            cat2.Say();


            var cat3 = new Cat("小黑");

            var cat4 = new Cat("小黄", new DateTime(2016, 1, 1));
        }
        /// <summary>
        /// 
        /// </summary>
        /// 访问修饰符 方法返回类型 void代表没有返回值 int 函数名字
        public void fun()
        {

        }

        /// <summary>
        /// 执行两数相加
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public double add(double a,double b)
        {
            //函数的作用。
            //执行的逻辑
            return a + b;
        }
    }
}
